class Package {
    // TS 可以在属性前添加属性的修饰符
    /**
     * public 修饰的属性可以在任意位置访问/修改 是默认值
     * private 私有属性，私有属性只能在类内部进行访问/修改
     * protected 受保护的属性，只能在当前类和当前类的子类中访问/修改
     */
    public name: string
    private _age: number
    protected height: number

    constructor(name: string, age: number, height: number) {
        this.name = name
        this.height = height
        this._age = age
    }

    // getAge() {
    //     return this.age
    // }

    // setAge(age: number) {
    //     this.age = age
    // }

    // TS 中设置getter setter 方法的方式
    get age() {
        return this._age
    }
    set age(value: number) {
        this._age = value
    }
}

class B extends Package {
    aa() {
        console.log(this.height);
    }
}

let package1 = new Package('a', 1, 1)
package1.name
// package1.getAge()
// package1.setAge(5)
package1.age
// package1.height
package1.age = 5


class C {

    // 可以直接将属性定义在构造函数中
    constructor(public name: string, private age: number) {

    }
}

let c = new C('aa', 11)


export default Package
